package com.xingda.packing.service;

import com.xingda.packing.config.appset.IAppSet;
import com.xingda.packing.domain.PackProductionLine;
import com.xingda.packing.domain.ShuntProductionLine;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;

@Component
@Slf4j
public class PackLineService {
    @Resource
    List<IAppSet> appSets;
    @Resource
    PackProductionLine packProductionLine;
    @Resource
    ShuntProductionLine shuntProductionLine;

    @PostConstruct
    public void start() {

        appSets.forEach(IAppSet::init);
        boolean env = packProductionLine.getEnv().startsWith("xd-prod");
        String model = packProductionLine.getModel();
        log.info("====env:{}, model:{}", env, model);

        /*
         * 1 双机单分流   -DMSS  -Double Machine Single Shunt-
         * 2 双机双分流   -DMDS
         * 3 三机单分流   -TMSS
         * */

//      双机单分流区
        if (model.equals("DMSS") ) {
            log.info("====双机单分流");
//            初始化
            log.info("----------------加载PLC&MES报警信息----------------");
            packProductionLine.initAlarmType();
            log.info("----------------加载左侧装箱各区域初始状态----------------");
            packProductionLine.start(1);
            log.info("----------------加载右侧装箱各区域初始状态----------------");
            packProductionLine.start(2);
            log.info("----------------加载分流区域初始状态----------------");
            shuntProductionLine.initStatus(4);
//            装箱
            if (env) {
                log.info("----------------左侧装箱启动----------------");
                packProductionLine.start(1);
                log.info("----------------右侧装箱启动----------------");
                packProductionLine.start(2);
                log.info("----------------分流模块启动----------------");
                shuntProductionLine.start(4);
            }
        } else if (model.equals("DMDS")) {
            log.info("====双机双分流区");
//            初始化
            log.info("----------------加载PLC&MES报警信息----------------");
            packProductionLine.initAlarmType();
            log.info("----------------加载左侧装箱各区域初始状态----------------");
            packProductionLine.initStatus(1);
            log.info("----------------加载右侧装箱各区域初始状态----------------");
            packProductionLine.initStatus(2);
            log.info("----------------加载左分流区域初始状态----------------");
            shuntProductionLine.initStatus(4);
            log.info("----------------加载右分流区域初始状态----------------");
            shuntProductionLine.initStatus(5);
//            装箱
            if (env) {
                log.info("----------------左侧装箱启动----------------");
                packProductionLine.start(1);
                log.info("----------------右侧装箱启动----------------");
                packProductionLine.start(2);
                log.info("----------------左侧分流模块启动----------------");
                shuntProductionLine.start(4);
                log.info("----------------右侧分流模块启动----------------");
                shuntProductionLine.start(5);
            }
        } else if (model.equals("TMSS")) {
            log.info("====三机单分流");
            log.info("----------------加载PLC&MES报警信息----------------");
            packProductionLine.initAlarmType();
            log.info("----------------加载左侧装箱各区域初始状态----------------");
            packProductionLine.initStatus(1);
            log.info("----------------加载右侧装箱各区域初始状态----------------");
            packProductionLine.initStatus(2);
            log.info("----------------加载中侧装箱各区域初始状态----------------");
            packProductionLine.initStatus(3);
            log.info("----------------加载分流区域初始状态----------------");
            shuntProductionLine.initStatus(4);
            if (env) {
                log.info("----------------左侧装箱启动----------------");
                packProductionLine.start(1);
                log.info("----------------中侧装箱启动----------------");
                packProductionLine.start(2);
                log.info("----------------右侧装箱启动----------------");
                packProductionLine.start(3);
                log.info("----------------分流模块启动----------------");
                shuntProductionLine.start(4);
            }
        } else {
//            TODO：异常处理  -- 改成tryCatch
            log.info("====packLineService异常====");
        }
//region  旧代码
//        appSets.forEach(IAppSet::init);
//        boolean env = packProductionLine.getEnv().startsWith("xd-prod");
//        log.info("----------------加载左侧装箱各区域初始状态----------------");
//        packProductionLine.initStatus(1);
//        log.info("----------------加载右侧装箱各区域初始状态----------------");
//        packProductionLine.initStatus(2);
//        log.info("----------------加载左分流区域初始状态----------------");
//        shuntProductionLine.initStatus(3);
//        log.info("----------------加载右分流区域初始状态----------------");
//        shuntProductionLine.initStatus(4);
//        packProductionLine.initAlarmType();
//        if (env) {
//            log.info("----------------左侧装箱启动----------------");
//            packProductionLine.start(1);
//            log.info("----------------右侧装箱启动----------------");
//            packProductionLine.start(2);
//            log.info("----------------左侧分流模块启动----------------");
//            shuntProductionLine.start(3);
//            log.info("----------------右侧分流模块启动----------------");
//            shuntProductionLine.start(4);
//        }
//        endregion
    }
}
